<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>谷歌地图 v3</title>
    <?php  Yii::app()->clientScript->registerCoreScript('jquery')?>
    <script src="http://maps.google.com/maps/api/js?v=3.1&sensor=true" type="text/javascript"></script>
    
    <script type="text/javascript">
    	var array ;//google地图坐标数组
        var map;// 地图对象
        var directionsService = new google.maps.DirectionsService();
        var directionDisplay;
        var path = null,timer = 0,index = 0,marker = null;
        function init() {
            directionsDisplay = new google.maps.DirectionsRenderer();
            var coor = new google.maps.LatLng(39.960872,116.271486);
            map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: coor, mapTypeControl: false, mapTypeId: google.maps.MapTypeId.ROADMAP });

            directionsDisplay.setMap(map);
            $.ajax({
          	   type: "POST",
          	   url: "/index.php/imgs/Ajax_google_code",
          	   data: "name=John&location=Boston",
          	   success: function(msg){
          	     array = msg;
          	   }
          	});
            var request = {
                origin: "39.961497,116.284018",//起始上班地点 (北京市南坞坐标)
                destination: "39.966464,116.284018",//结束上班地点 （北京市人民大学坐标）
				//waypoint 包括以下字段：
				//•location（必需）指定路标的地址。
				//•stopover（可选）指示此路标是路线上的实际停留点 (true)，还是仅为通过指定位置 (false) 的路线首选项。默认情况下，中途停留为 true。
				waypoints: [
				array
				/*
				{location:"39.961497,116.284018",stopover:true},
				{location:"39.966464,116.283417",stopover:true},
				{location:"39.966925,116.28861",stopover:true},
				{location:"39.966464,116.283417",stopover:true},
				{location:"39.961497,116.284018",stopover:true}
				*/
				],
                optimizeWaypoints: true,
                travelMode: google.maps.DirectionsTravelMode.DRIVING
            };
			/*
				Google Maps API 需要调用外部服务器，因此，对路线服务的访问是异步的。为此，您需要传递一个回调方法，以在请求完成后执行。此回调方法将会对结果进行处理。请注意，路线服务可能以单独 routes[] 数组的形式传回多个可能的行程。

				要在 V3 中使用路线，请创建一个类型为 DirectionsService 的对象，并调用 DirectionsService.route() 向路线服务发送一条请求，方法是为其传递一个 DirectionsRequest 对象常量，其中包含输入项和一个回调方法，该回调方法将会在收到响应后执行。
				DirectionsRequest 对象常量包含下列字段：
				{   origin: LatLng | String,   destination: LatLng | String,   travelMode: TravelMode,   unitSystem: UnitSystem,   waypoints[]: DirectionsWaypoint,   optimizeWaypoints: Boolean,   provideRouteAlternatives: Boolean,   avoidHighways: Boolean,   avoidTolls: Boolean   region: String }下面对这些字段进行了说明：

				•origin（必需）指定计算路线时所用的起始地点。该值可以指定为 String（如“Chicago, IL”），也可以指定为 LatLng 值。
				•destination（必需）指定计算路线时所用的结束地点。该值可以指定为 String（如“Chicago, IL”），也可以指定为 LatLng 值。
				•travelMode（必需）指定计算路线时所用的交通方式。在下面的出行方式中指定有效值。
				•unitSystem（可选）指定显示结果时使用的单位制。在下面的单位制中指定有效值。

				•waypoints[]（可选）指定 DirectionsWaypoint 数组。路标将通过让路线经过指定地点而改变路线。将路标指定为带有如下字段的一个对象常量：

				◦location 将要进行地址解析的路标地点指定为 LatLng 或 String。
				◦stopover 是一个布尔值，用于指示路标是否为路线上的停留点，这可以将这条路线分为两条路线。
				（有关路标的详细信息，请参见下文的在路线中使用路标。）

				•optimizeWaypoints（可选）指定可以优化使用所提供 waypoints 的路线，以提供尽可能短的路线。如果为 true，路线服务将在 waypoint_order 字段中传回重新排序的 waypoints。（有关详细信息，请参见下文的在路线中使用路标。）
				•provideRouteAlternatives（可选）设置为 true 时，指定路线服务可以在响应中提供多条备选路线。请注意，提供备选路线可能增加服务器的响应时间。
				•avoidHighways（可选）设置为 true 时，表示计算的路线应避开主要公路（如果可能）。•avoidTolls（可选）设置为 true 时，表示计算的路线应避开收费道路（如果可能）。•region（可选）指定区域代码，该区域代码指定为 ccTLD（“顶级域”）双字符值。（有关详细信息，请参见下文的区域偏向。）
				*/
            // 获取从“北京市南坞”到“北京市人民大学”的线路
            directionsService.route(request, function(response, status) {
                if (status == google.maps.DirectionsStatus.OK) {
                    directionsDisplay.setDirections(response);
                    path = response.routes[0].overview_path;
                    if (path) {
                        timer = window.setInterval(function() {
                            if (!marker) {
                                marker = new google.maps.Marker({ position: path[index++], map: map });
                            } else {
                                if (index < path.length) {
                                    marker.setPosition(path[index++]);
                                } else {
                                    index = 0;
                                    window.clearInterval(timer);
                                }
                            }
                        }, 200);//30是运动时间
                    }
                }
            });
        }
    </script>
</head>
<body onLoad="init();">
    <div id="map" style="width:800px; height:800px;"></div>
</body>
</html> 
